1676E - Eating Queries - CodeForces Solution


binary search greedy sortings *1100

Please click on ads to support us..

Python Code:

def BS(zoz, val):
    left = 0; right = len(zoz)-1
    while (right-1>left):
        mid = (left+right)//2
        if (zoz[mid]<val):
            left = mid
        else:
            right = mid
    if (zoz[left]>=val):
        return left
    else:
        return right
    
 
for _ in range(int(input())):
    n, q = map(int, input().split())
    zoz = [int(x) for x in input().split()]
    zoz.sort(); zoz.reverse()
    pref = [zoz[0]]
    for i in range(1, n):
        pref.append(zoz[i] + pref[-1])
    for i in range(q):
        query = int(input())
        if (query>pref[-1]):
            print(-1)
        else:
            print(BS(pref, query)+1)

C++ Code:

#include<bits/stdc++.h>
using namespace std;
#define int long long 
bool chk(int mid,vector<int >&s,int x){
int i;
int sum=0;

if(s[mid]>=x){
    return true;
}
else{
    return false;
}
}
int32_t main(){
    int t;
    cin>>t;
    while(t--){
        int n,q;
        cin>>n>>q;
        vector<int >sugar(n);
        int i,c=0;
        for(i=0;i<n;i++){
            cin>>sugar[i];
        }
   
        for(i=0;i<n;i++){
            c+=sugar[i];
        }
        sort(sugar.begin(),sugar.end());
            reverse(sugar.begin(),sugar.end());
            vector<int> prefix(n);
            prefix[0]=sugar[0];
            for(i=1;i<n;i++){
                prefix[i]=sugar[i]+prefix[i-1];
            }
        while(q--){
            int x;
            cin>>x;
            if(x>c){
                cout<<-1<<endl;
            }
            else{
int l=0,r=n-1;
int mid,ans;
while(l<=r){
    mid= l+(r-l)/2;
    if(chk(mid,prefix,x)){
ans=mid+1;

r=mid-1;

    }
    else{
        l=mid+1;
    }
}
cout<<ans<<endl;


            }
        }
    }
    return 0;
}


Comments

Submit
0 Comments
More Questions

292B - Network Topology
1339A - Filling Diamonds
910A - The Way to Home
617A - Elephant
48A - Rock-paper-scissors
294A - Shaass and Oskols
1213A - Chips Moving
490A - Team Olympiad
233A - Perfect Permutation
1360A - Minimal Square
467A - George and Accommodation
893C - Rumor
227B - Effective Approach
1534B - Histogram Ugliness
1611B - Team Composition Programmers and Mathematicians
110A - Nearly Lucky Number
1220B - Multiplication Table
1644A - Doors and Keys
1644B - Anti-Fibonacci Permutation
1610A - Anti Light's Cell Guessing
349B - Color the Fence
144A - Arrival of the General
1106A - Lunar New Year and Cross Counting
58A - Chat room
230A - Dragons
200B - Drinks
13A - Numbers
129A - Cookies
1367B - Even Array
136A - Presents